//
//  DataService.h
//  HousingPoliceAssistant
//
//  Created by 云警01 on 2019/6/6.
//  Copyright © 2019 盛洋. All rights reserved.
//


#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface DataService : NSObject

+ (DataService*)sharedService;

//全国省市区信息
@property (nonatomic, retain) NSArray *gProvinceCityDistrictData;

#pragma mark - 数据相关

/**
 *  指定设备兼容数值
 *
 *  @param ip4s
 *  @param ip5
 *  @param ip6
 *  @param ip6p
 *
 *  @return 返回对应设备数值
 */
+(float)deviceCompatibleNums:(float)ip4s ip5:(float)ip5 ip6:(float)ip6 ip6p:(float)ip6p;

/**
 *  根据当前设备与ip6的宽度比例返回值
 *
 *  @param num
 *
 *  @return 等比返回
 */
+(float)deviceCompatibleNumsWithScale:(float)num;


/**
 *  根据当前设备是否是iPhoneX返回状态栏值
 *  @return 等比返回
 */
+(float)GetStatusBarHeight;

/**
 *  根据当前设备获取导航标题最大字数
 *  @return 等比返回
 */
+(float)GetNavMaxTitleLength;

/**
 *  根据当前设备是否是iPhoneX返回底部34的高度
 *  @return 等比返回
 */
+(float)GetStatusBottomHeight;

/**
 *  判断是否第一次运行
 *
 *  @return 是否
 */
- (BOOL)isFirstStart;

/**
 *  判断程序是不是由推送服务启动的
 *  @param launchOptions
 *  @return 是否
 */
-(BOOL)isFromAps:(NSDictionary*)launchOptions;

/**
 *  获取md5后的uuid（同TID）
 *
 *  @return 获取md5后的uuid
 */
- (NSString*)getUUID;


/**
 *  清除本地证书
 */
-(void)clearCert;
/**
 *  时间格式转换
 *
 *  @param pubString yyyy-MM-dd HH:mm:ss
 *
 *  @return 昨天，今天，时间
 */
+(NSString *)intervalSinceNow: (NSString *) pubString;
/**
 *  时间格式转换:只显示年月日
 *
 *  @param pubString yyyy-MM-dd HH:mm:ss
 *
 *  @return yyyy-MM-dd
 */
+(NSString *)timeYearMonthDay: (NSString *) pubString;
/**
 *  时间格式转换
 *
 *  @param pubString yyyy-MM-dd HH:mm:ss
 *
 *  @return **分钟前，**小时前，时间
 */
+(NSString *)intervalSinceNowForReview: (NSString *) pubString;

/**
 *  图文直播页面时间格式转换
 *
 *  @param pubString yyyy-MM-dd HH:mm:ss
 *
 *  @return HH:MM 或者如果不是当天则统一用YY-MM-DD表示
 */
+(NSString *)intervalSinceNowForPhotoLive: (NSString *) pubString;

/*!
 *  格式化时间
 *
 *  @param pubString yyyy-MM-dd HH:mm:ss
 *
 *  @return MM-dd HH:mm
 */
+(NSString *)formatDate: (NSString *) pubString;
/*!
 *  格式化时间
 *
 *  @param pubString    yyyy-MM-dd HH:mm:ss
 *  @param formatString 格式化样式 (例如:yyyy年MM月dd日 HH;mm:ss = 2015年06月04日 20:00:00)
 *
 *  @return formatString
 */
+(NSString *)formatDate: (NSString *) pubString formatString:(NSString *)formatString;

/*
 *  格式化时间
 *
 *  @param date   当前时间
 *  @param format 日期格式
 *
 *  @return format格式的字符串
 */
+ (NSString *)dateToString:(NSDate *)date format:(NSString *)format;

/*
 *  格式化时间
 *
 *  @param dateString 时间字符串 yyyy-MM-dd HH:mm:ss
 *
 *  @return date
 */
+ (NSDate *)dateFromString:(NSString *)dateString;

/**
 *计算两个时间相差天数
 */
- (NSUInteger )getDay:(NSString *)fromDate systemTime:(NSString *)toDate;


/*
 *  格式化时间
 *
 *  @param dateString 时间字符串 yyyy-MM-dd HH:mm:ss
 *
 *  @return date
 */
+ (NSDate *)dateFromString:(NSString *)dateString format:(NSString *)myformat;


/*
 *  格式化数字
 *
 *  @param number爆料评论数或者点赞数
 *
 *  @return     上头条模块中评论和点赞数量显示实际数值，大于等于100000时，显示99999+。
 */
+ (NSString *)formatNumber:(int)number;

/*
 * 时间戳转时间
 */
+(NSString *)stringToDate:(NSString *)dateNum;
- (NSString *)getTimeFromTimesTamp:(NSString *)timeStr format:(NSString *)myformat;

#pragma mark - 字体相关
//新闻字体大小
+ (UIFont *)newsFont;

#pragma mark - 缓存相关

/**
 *  清除缓存
 */
+ (void)cleanCache;

/**
 *  计算程序缓存大小
 */
+ (float)calculateCache;

/**
 *  获取缓存中类别
 *
 *  @param categoriesType key
 *
 *  @return 列表
 */
+ (NSArray *)getCategories:(NSString*)categoriesType;

/**
 *  保存类别至缓存
 *
 *  @param categories     categories
 *  @param categoriesType categoriesType
 */
+ (void)saveCategories:(NSArray *)categories categoriesType:(NSString*)categoriesType;

#pragma mark - 地理信息相关
//获取区的位置编码
+(NSString*)convertNameToCode:(NSString *)province city:(NSString *)city district:(NSString *)district;
//通过省市区编码获取省市区名称
-(NSString*)convertCodeToName:(NSString *)code;

//手机号码验证
-(BOOL)isValidateMobile:(NSString *)mobile;
//邮政编码验证
- (BOOL)isValidPostcode:(NSString *)postcode;

/*
 *  获取html模板正则表达式
 *
 *  用于进入新闻详情页时，用服务端的数据填充html模板中的数据
 *
 *  @return html模板正则表达式
 */
+ (NSString *)getHtmlRegex;

/*
 *  根据机型获取高度
 *  @return 高度
 */
+(CGFloat)GetIphone5HeightFloat:(int)n;
/*
 *  根据机型获取宽度
 *  @return 宽度
 */
+(CGFloat)GetIphone5WidthFloat:(int)n;


/*
 *  image     需要压缩的图片
 *  maxLength 图片最大值(以M为单位 例:1024*1024为1M)
 *  @return   新图片
 */
+(UIImage *)compressImageQuality:(UIImage *)image toByte:(NSInteger)maxLength;

/**
 *  指定设备返回不同长度的字符串(预约信息页面选择完工种后使用)
 *  str 需要截取的字符串
 *  @return 返回对应设备数值
 */
+(NSString *)CutOutStringFromStr:(NSString *)str;
/**
 *计算两个时间相差天数(有可能有负数)
 */
- (NSInteger)getDifferDay:(NSString *)earlyDate withLaterDate:(NSString *)laterDate;
/**
 * 计算两个时间相差月份数
 */
- (NSInteger)getDifferMonth:(NSDate*)earlyDate withLaterDate:(NSDate*)laterDate;
/**
 * 获取当前日期的前一天
 */
- (NSString *)getPreviousDayFromDate:(NSString *)currentDay;
/**
 * 获取当前月份的上个月
 */
- (NSString *)getPreviousDateFromDate:(NSString *)currentMonth withMonth:(int)month;
/**
 * 存储最新日期到本地
 */
- (void)SaveCurrentDayToLocal;
/**
 * 根据传入的数值返回需要显示半星1星还是0星   0~0.3不显示，0.31~0.7显示半颗星，0.71到1显示整颗星
 */
- (float)CountStarNum:(float)num;
/**
 * 获取Window当前显示的ViewController
 */
- (UIViewController*)currentViewController;

/**
 * 获取网络时间,用户篡改本机时间后可使用此时间
 */
+ (NSDate *)getInternetDate;
/**
 * 退出登录成功
 */
+ (void)loginoutSuccess;
/**
 * 检测当前两个时间相差小时和分钟数
 */
+ (NSDateComponents *)CheckNowTimeToStartTime:(NSString *)Time1 AndTime2:(NSString *)Time2;



@end
